Fleetrun
Hecterra
NimBus
Otras aplicaciones
Wialon para Android/iOS
Logistics
Wialon Local
Wialon Hosting
WiaTag
Configurator
LeaseControl
es
Contenido
Introducción al SDK: solicitudes básicas
  • technical_consulting

El SDK (Software Development Kit) es un conjunto de herramientas para desarrollar aplicaciones propias. El SDK de Wialon incluye varios API. El más básico de ellos es el Remote API, al cual están dirigidos estos artículos. El Remote API permite el acceso a los datos a través de solicitudes HTTP y es relevante para 1C, PHP, C++/C# y otros lenguajes de programación. El JS API y otros están construidos sobre la base del Remote API.

En este artículo se considerarán los conocimientos básicos necesarios para los principiantes en el uso del Remote API.

También pueden ser útiles:

  • Portal para desarrolladores (en inglés) con documentación y descripción detallada de cada solicitud.
  • Ejemplos de soluciones listas utilizando el SDK en la sección Marketplace.
  • Serie de webinars Wialon API and SDK: how-to videos (en inglés).
  • Colección de ejemplos (en inglés) en la aplicación Postman para probar solicitudes API.
  • Sección del foro Custom SDK development.

Visualización de solicitudes en el navegador

Al comenzar a estudiar el SDK, a menudo surge la necesidad de entender qué solicitud API se envía al servidor al realizar una u otra acción en la interfaz de Wialon. Esto se puede rastrear fácilmente utilizando las herramientas integradas del navegador para monitorear solicitudes de red.

En el navegador Chrome, se utiliza la pestaña Red de las Herramientas para desarrolladores, que se abren al presionar la tecla F12. En otros navegadores, esta herramienta puede abrirse de manera diferente, lo cual se puede leer en la documentación del navegador.

Al visualizar las solicitudes de red, se puede ver la solicitud enviada, sus parámetros y la respuesta del servidor API en formato JSON.

 Ejemplo

Como ejemplo, crearemos una geocerca circular. Abriremos la pestaña Red y luego llenaremos los campos Nombre, Descripción, Tipo, Radio y Coordenadas.

Después de hacer clic en el botón Guardar, la geocerca se creará y la solicitud correspondiente se mostrará inmediatamente en el panel derecho. Para obtener información sobre la solicitud, haga clic en ella.

En este panel hay tres pestañas convenientes:

  • Encabezados: permite ver la URL completa de la solicitud, el método de envío utilizado (POST o GET), el estado de ejecución de la solicitud y otra información útil. Entre otras cosas, aquí se puede encontrar el nombre de la solicitud API. En este caso, es resource/update_zone.



  • Carga útil: muestra los parámetros de la solicitud, sobre cada uno de los cuales se puede leer en la documentación. Por ejemplo, los parámetros que se sugirieron al crear la geocerca: n — nombre, d — descripción, t — tipo (círculo), w — radio del círculo, x e y — coordenadas del centro.



  • Respuesta: muestra la respuesta del servidor API en formato JSON (en caso de error, su código).


Algunas solicitudes se ejecutan en lotes. Entonces, al visualizar las solicitudes de red, es necesario encontrar la solicitud core/batch y estudiar sus parámetros.

No toda la funcionalidad de la interfaz de seguimiento se basa en el Wialon API (un ejemplo de excepción es la herramienta Distancia).

Formato de la solicitud

Las solicitudes HTTP se envían al servidor en el siguiente formato:

https://host/wialon/ajax.html?svc=REQUEST_NAME¶ms={PARAMETERS}&sid=SESSION_IDENTIFIER
ParámetroDescripción
host

Para Wialon Hosting, generalmente es hst-api.wialon.com, y para Wialon Local, es el sitio del sistema de rastreo o CMS.

svc

Nombre de la solicitud (por ejemplo, resource/update_zone).

params

Parámetros para ejecutar la solicitud en formato JSON. Están enumerados en la documentación, y algunos de ellos pueden ser opcionales. En algunos casos, se envía un valor vacío params={}.

sidIdentificador único de sesión, que se utiliza en casi todas las solicitudes. El servidor lo devuelve al solicitar la autorización.

Se pueden enviar solicitudes para probar la funcionalidad del API a través de la barra de direcciones del navegador. Es necesario que los caracteres estén codificados para su transmisión en la URL. Por ejemplo, el código del carácter % tiene el aspecto %25, lo cual se puede verificar con herramientas en línea de acceso público. Si los caracteres especiales no están codificados, el servidor devolverá un error con el código 4.

Obtención de token y autorización

Para la autorización en Wialon se utiliza un token, es decir, una clave utilizada para la identificación cifrada del usuario.

Para crear un token, se puede utilizar el formulario oAuth. Después de un inicio de sesión exitoso, el token se mostrará en la barra de direcciones del navegador como el valor del parámetro formulario oAuth. Es importante tener en cuenta los parámetros adicionales que regulan propiedades como la duración (parámetro duration), el nombre de usuario (parámetro user), los derechos de acceso (parámetro access_type) y otros.

Ejemplo de formulario extendido para obtener un token:

https://hosting.wialon.com/login.html?client_id=APP_NAME&access_type=256&activation_time=0&duration=0&lang=en&flags=0&user=USER_NAME

Ejemplo de respuesta:

https://hosting.wialon.com/login.html?lang=en&user=USER_NAME&wialon_sdk_url=https%3A%2F%2Fhst%2Dapi%2Ewialon%2Ecom&access_token=TOKEN_VALUE&svc_error=0

Después de obtener el token, se debe utilizar para la autorización. Ejemplo de inicio de sesión con token:

https://hst-api.wialon.com/wialon/ajax.html?svc=token/login¶ms={"token":"TOKEN_VALUE"}

En la respuesta al inicio de sesión con token, se incluye el parámetro eid, cuyo valor es el identificador único de sesión. Luego, se utilizará en casi todas las solicitudes API.

Configuración de la zona horaria

Por defecto, al trabajar con Remote API, los datos se muestran según la zona horaria GMT+0. Para cambiarla a la necesaria, se utiliza la solicitud render/set_locale. Es suficiente ejecutar esta solicitud en el marco de una sesión activa.

Se recomienda configurar la zona horaria inmediatamente después de la autorización, es decir, antes de realizar las acciones principales (solicitud de mensajes, construcción de recorridos, etc.).

Al enviar la solicitud render/set_locale, es necesario utilizar el parámetro tzOffset. El método estándar para calcular su valor se describe en la documentación.

 Ejemplo

Como ejemplo, calcularemos el valor del parámetro tzOffset para un cliente de Australia (Sídney).

Los valores necesarios de configuración de tiempo (horario de verano y zona horaria) se pueden encontrar en la documentación. En este caso, el valor de la zona horaria es 36000 (en formato DEC), y el horario de verano es 0x0A270000 (en formato HEX).

Luego, es necesario realizar dos acciones:

  1. Aplicar una operación bitwise AND a la zona horaria con la máscara f000ffff (HEX).
    Como la operación utilizada se realiza para cada par de bits, primero es necesario convertir los valores al sistema binario:

    Zona horaria

    00000000000000001000110010100000 (BIN)

    36000 (DEC)

    Máscara

    11110000000000001111111111111111 (BIN)

    f000ffff (HEX)

    Resultado de la operación

    00000000000000001000110010100000 (BIN)

    36000 (DEC)

    En este caso, la operación no cambió el valor de la zona horaria.

  2. Aplicar una operación bitwise OR al resultado del paso anterior con la máscara del horario de verano.

    Resultado anterior

    00000000000000001000110010100000 (BIN)

    36000 (DEC)

    Máscara

    00001010001001110000000000000000 (BIN)

    0x0A270000 (HEX)

    Resultado de la operación

    00001010001001111000110010100000 (BIN)

    170364064 (DEC)



También se puede obtener el valor necesario del parámetro tzOffset mediante la visualización de solicitudes de red al cambiar la zona horaria del usuario en la interfaz web.

ID del sistema

En el API, el trabajo con casi todos los elementos se realiza a través de identificadores internos, llamados ID del sistema, que se presentan como valores numéricos únicos.

No se debe confundir el ID del sistema de una unidad con su ID único, que se especifica en las propiedades en la pestaña Básicas.

En las interfaces web, los ID del sistema no se muestran por defecto, pero se pueden ver de tres maneras:

  1. En la respuesta a la solicitud de búsqueda de elementos por criterios (core/search_items). Se detallará en la siguiente sección de este artículo.
  2. En los parámetros de las solicitudes al visualizar las solicitudes de red en el navegador.
  3. En la columna avl_id en el sistema de gestión CMS Manager.

    Para que se muestre la columna avl_id, es necesario iniciar sesión en el CMS, añadiendo al final del enlace ?features=avl_id. Un ejemplo de dicho enlace se muestra en la imagen a continuación.

Búsqueda de elementos por criterios

Esta solicitud permite encontrar elementos según los criterios especificados en los parámetros.

La búsqueda se realiza por los siguientes tipos de elementos, que se indican en el campo itemsType:

  • avl_hw — tipo de dispositivo;
  • avl_resource — recurso;
  • avl_retranslator — repetidor;
  • avl_unit — unidad;
  • avl_unit_group — grupo de unidades;
  • user — usuario;
  • avl_route — ruta.

Uno de los posibles criterios de búsqueda pueden ser los subelementos. En tal caso, para el parámetro propType se establece el valor propitemname, y el parámetro propName tomará los siguientes valores:

  • Unidades:
    • unit_sensors — sensores;
    • unit_commands — comandos;
    • service_intervals — intervalos de servicio;

  • Recursos:
    • drivers — conductores;
    • driver_groups — grupos de conductores;
    • jobs — tareas;
    • notifications — notificaciones;
    • trailers — remolques;
    • trailer_groups — grupos de remolques;
    • zones_library — geocercas;
    • reporttemplates — plantillas de informes;
    • orders — pedidos;

  • Rutas:
    • rounds — rutinas;
    • route_schedules — horarios;

  • Repetidores:
    • retranslator_units — unidades retransmitidas;

  • Unidades, usuarios o recursos:
    • custom_fields — campos personalizados;
    • admin_fields — campos administrativos.

Los ID del sistema de los elementos tienen valores numéricos únicos y son asignados por el servidor.

La numeración de los ID del sistema de los subelementos se realiza en orden de creación y comienza desde 1.

Si anteriormente se crearon varios subelementos (por ejemplo, con ID del sistema 1, 2 y 3), y luego se eliminó alguno de ellos (supongamos que quedaron intactos los subelementos con ID 1 y 3), el siguiente subelemento creado ocupará el ID libre más bajo (en este ejemplo, el ID 2).

Mediante la solicitud de búsqueda no se pueden mostrar datos de un subelemento específico. En la respuesta a la solicitud de búsqueda se incluye información sobre los elementos en sí (tipo de dispositivo, recurso, repetidor, unidad, grupo de unidades, usuario, ruta). Es decir, los subelementos son un criterio para la búsqueda.

Por ejemplo, se puede buscar por el nombre del sensor Engine, pero en la respuesta a la solicitud no solo se incluirá información sobre los sensores, sino sobre las unidades en las que se creó el sensor con el nombre buscado.

La información en la respuesta depende de los flags especificados en la solicitud de búsqueda en el parámetro flags. Los flags se establecen en formato DEC.

Los flags se pueden sumar entre sí para obtener varios tipos de datos al mismo tiempo, en lugar de realizar varias solicitudes separadas.

Por ejemplo, si es necesario mostrar las propiedades principales de la unidad ("flag":1), los comandos creados en ella ("flag":524288) y la última ubicación ("flag":4194304), basta con realizar una búsqueda de unidades con el flag "flag":4718593, ya que 1 + 524288 + 4194304 = 4718593.

Veamos algunos ejemplos de uso de la solicitud de búsqueda de elementos por criterio (otros ejemplos se pueden encontrar en la documentación).

Búsqueda de elementos con un nombre específico

Es necesario obtener una lista de todas las unidades disponibles para el usuario, cuyo nombre contenga la palabra Tractor, así como información sobre los sensores creados en las unidades.

En tal caso, se puede utilizar la siguiente solicitud:

https://hst-api.wialon.com/wialon/ajax.html?svc=core/search_items¶ms={"spec":{"itemsType":"avl_unit","propName":"sys_name","propValueMask":"*Tractor*","sortType":"sys_name"},"force":1,"flags":4097,"from":0,"to":0}&sid=SESSION_IDENTIFIER
Parámetro y su valorDescripción
"itemsType":"avl_unit"

La búsqueda se realizará por unidades. 

Si se deja el valor vacío ("itemsType":""), la búsqueda se realizará por todos los tipos de elementos.

"propName":"sys_name"

La búsqueda se realizará por el nombre del elemento.

"propValueMask":"*Tractor*"

En la respuesta se mostrará una lista de unidades cuyo nombre contenga la palabra Tractor, y antes y después de ella puede haber cualquier cantidad de caracteres. 

Si se establece el valor * para este parámetro, en la respuesta a la solicitud se incluirán elementos con cualquier nombre, es decir, todos los elementos disponibles para el usuario.

"sortType":"sys_name"

La clasificación se realizará por el nombre del elemento.

"force":1

Los resultados de búsquedas anteriores no se tendrán en cuenta.

"flags":4097

La respuesta incluirá información sobre las propiedades básicas, ya que es necesario obtener los nombres de las unidades, y sobre los sensores creados.

1 + 4096 = 4097

"from":0;"to":0No se aplicarán restricciones en la cantidad de elementos encontrados.
 Respuesta
{
	"searchSpec":{
		"itemsType":"avl_unit",
		"propName":"sys_name",
		"propValueMask":"*Tractor*",
		"sortType":"sys_name",
		"propType":"",
		"or_logic":"0"
	},
	"dataFlags":4097,
	"totalItemsCount":1,
	"indexFrom":0,
	"indexTo":0,
	"items":[
		{
			"nm":"Tractor 1",
			"cls":2,
			"id":22353120,
			"mu":0,
			"sens":{
				"1":{
					"id":1,
					"n":"Ignition",
					"t":"engine operation",
					"d":"",
					"m":"On\/Off",
					"p":"in1",
					"f":0,
					"c":"{\"act\":1,\"appear_in_popup\":true,\"ci\":{},\"cm\":1,\"mu\":0,\"pos\":2,\"show_time\":false,\"timeout\":0}",
					"vt":0,
					"vs":0,
					"tbl":[]
				},
				"2":{
					"id":2,
					"n":"Fuel level",
					"t":"fuel level",
					"d":"",
					"m":"l",
					"p":"adc1",
					"f":0,
					"c":"{\"act\":1,\"appear_in_popup\":true,\"calc_fuel\":0,\"ci\":{},\"cm\":1,\"fuel_params\":{\"fillingsJoinInterval\":300,\"filterQuality\":0,\"flags\":0,\"ignoreStayTimeout\":10,\"minFillingVolume\":20,\"minTheftTimeout\":0,\"minTheftVolume\":10,\"theftsJoinInterval\":300},\"mu\":0,\"pos\":1,\"show_time\":false,\"timeout\":0}",
					"vt":0,
					"vs":0,
					"tbl":[]
				}
			},
			"sens_max":-1,
			"uacl":-1
		}
	]
}

Búsqueda de usuarios creados después de una fecha específica

Es necesario obtener una lista de usuarios que fueron creados después del 23 de febrero de 2021 a las 05:41:46 (GMT+0). La respuesta debe contener los ID del sistema de estos usuarios y sus direcciones de correo electrónico.

En este caso, se puede utilizar la siguiente solicitud:

https://hst-api.wialon.com/wialon/ajax.html?svc=core/search_items¶ms={"spec":{"itemsType":"user","propName":"rel_creation_time","propValueMask":">=1614058906","sortType":"sys_name"},"force":1,"flags":3,"from":0,"to":0}&sid=SESSION_IDENTIFIER
Parámetro y su valorDescripción
"itemsType":"user"

La búsqueda se realizará por usuarios.

"propName":"rel_creation_time"

La búsqueda se realizará por fecha de creación.

"propValueMask":">=1614058906"

La respuesta mostrará una lista de elementos cuyo tiempo de creación es mayor o igual al 23 de febrero de 2021 a las 05:41:46 (GMT+0). 

En las solicitudes se utiliza el tiempo Unix. Para convertir la fecha y hora a tiempo Unix, se pueden usar herramientas en línea de acceso público.

"sortType":"sys_name"

La clasificación se realizará por el nombre del elemento.

"force":1

Los resultados de búsquedas anteriores no se tendrán en cuenta.

"flags":3

La respuesta contendrá información sobre las propiedades básicas, ya que es necesario obtener los ID del sistema de los usuarios, y sobre las propiedades personalizadas, ya que es necesario obtener las direcciones de correo electrónico de los usuarios.

1 + 2 = 3

"from":0;"to":0No se aplicarán restricciones en la cantidad de elementos encontrados.

Búsqueda de unidades de un tipo específico

Es necesario obtener una lista de unidades con el tipo de equipo Wialon Retranslator, que hayan enviado mensajes después del 12 de febrero de 2023 a las 12:00:00 (GMT+0). La respuesta debe mostrar los sensores de las unidades, el tiempo del último mensaje y las ubicaciones.

En este caso, se puede utilizar la siguiente solicitud:

https://hst-api.wialon.com/wialon/ajax.html?svc=core/search_items¶ms={"spec":{"itemsType":"avl_unit","propName":"rel_hw_type_name,rel_last_msg_date","propValueMask":"Wialon%20Retranslator,>1676203200","sortType":"rel_creation_time"},"force":1,"flags":1,"from":0,"to":0}&sid=SESSION_IDENTIFIER
Parámetro y su valorDescripción
"itemsType":"avl_unit"

La búsqueda se realizará por unidades.

"propName":"rel_hw_type_name,rel_last_msg_date"

La búsqueda se realizará por tipo de equipo y tiempo del último mensaje recibido.

"propValueMask":"Wialon%20Retranslator,>1676203200"

La respuesta mostrará una lista de elementos con el tipo de equipo Wialon Retranslator, cuyo tiempo de envío del último mensaje es posterior al 12 de febrero de 2023 a las 12:00:00 (GMT+0).

"sortType":"rel_creation_time"

La clasificación se realizará por la fecha de creación de los elementos.

"force":1

Los resultados de búsquedas anteriores no se tendrán en cuenta.

"flags":1

La respuesta contendrá información sobre las propiedades básicas de la unidad.

"from":0;"to":0No se aplicarán restricciones en la cantidad de elementos encontrados.

Búsqueda de unidades por nombre de sensor

Es necesario obtener una lista de unidades en las que se haya creado un sensor con el nombre Engine.

En este caso, se puede utilizar la siguiente solicitud:

https://hst-api.wialon.com/wialon/ajax.html?svc=core/search_items¶ms={"spec":{"itemsType":"avl_unit","propType":"propitemname","propName":"unit_sensors","propValueMask":"Engine","sortType":"sys_name"},"force":1,"flags":1,"from":0,"to":0}&sid=SESSION_IDENTIFIER
Parameter and its valueDescripción
"itemsType":"avl_unit"La búsqueda se realizará por unidades.
"propType":"propitemname"La búsqueda se realizará por nombre de subelemento.
"propName":"unit_sensors"La búsqueda se realizará por nombre de sensor.
"propValueMask":"engine"La respuesta mostrará una lista de unidades en cuyas propiedades se haya creado un sensor con el nombre Engine.
"sortType":"sys_name"La clasificación se realizará por el nombre del elemento.
"force":1Los resultados de búsquedas anteriores no se tendrán en cuenta.
"flags":1La respuesta contendrá información sobre las propiedades básicas de las unidades.
"from":0;"to":0No se aplicarán restricciones en la cantidad de elementos encontrados.

Búsqueda de grupos de unidades por varios criterios

Es necesario obtener una lista de grupos de unidades que fueron creados por el usuario User y en los que se hayan añadido más de 5 unidades.

En este caso, se puede utilizar la siguiente solicitud:

https://hst-api.wialon.com/wialon/ajax.html?svc=core/search_items¶ms={"spec":{"itemsType":"avl_unit_group","propName":"rel_user_creator_name,rel_group_unit_count","propValueMask":"User,>5","sortType":"sys_name"},"force":1,"flags":133,"from":0,"to":0}&sid=SESSION_IDENTIFIER
Parámetro y su valorDescripción
"itemsType":"avl_unit_group"La búsqueda se realizará por grupos de unidades.
"propName":"rel_user_creator_name,rel_group_unit_count"La búsqueda se realizará por nombre del creador y cantidad de elementos en el grupo.
"propValueMask":"User,>5"La respuesta mostrará una lista de grupos de unidades cuyo creador es el usuario User y en los que se hayan añadido más de 5 unidades.
"sortType":"sys_name"La clasificación se realizará por el nombre del elemento.
"force":1Los resultados de búsquedas anteriores no se tendrán en cuenta.
"flags":133

La respuesta contendrá información sobre las propiedades básicas, propiedades de facturación y campos administrativos.

1 + 4 + 128 = 133

"from":0;"to":0No se aplicarán restricciones en la cantidad de elementos encontrados.

Lista de errores comunes

El error se muestra cuando no se puede ejecutar la solicitud. La lista completa de errores devueltos se puede encontrar en la documentación.

Los errores más comunes son:

  • {error: 1} — sesión no válida. Este error se muestra cuando ha expirado el tiempo de vida del identificador único de sesión. Para corregir el error, basta con iniciar sesión con el token nuevamente y usar el nuevo identificador de sesión (sid) para ejecutar las solicitudes.

    Si no se ejecuta ninguna solicitud dentro de los 5 minutos en el marco de la sesión, esta se vuelve inactiva. Para mantener la sesión, puede enviar la solicitud avl_evts cada 5 minutos.

  • {error: 4} — entrada no válida. Este error se muestra si hay un error en el texto de la solicitud: no se especifican todos los parámetros requeridos, los parámetros de texto no están entre comillas, falta un paréntesis de apertura o cierre, etc. Para corregir el error, es necesario corregir el texto de la solicitud según su descripción en la documentación.

  • {error: 7} — acceso denegado. Este error se muestra si el usuario no tiene suficientes derechos para ejecutar la solicitud. Para corregir el error, es necesario verificar si el token utilizado para obtener el identificador único de sesión tiene suficientes flags de acceso, así como si el usuario para el cual se generó el token tiene suficientes derechos sobre los elementos utilizados.

Ekaterina Grib,Customer Service Engineer

Introducción al SDK: creación de cuentas y unidades
  • technical_consulting

En este artículo se considerará la creación de cuentas y unidades mediante el Remote API. Estos elementos son clave al trabajar con Wialon, y su creación requiere la ejecución de una serie de acciones obligatorias.

También pueden ser útiles:

También pueden ser útiles:

  • Artículo Introducción al SDK: solicitudes básicas.
  • Portal para desarrolladores (en inglés) con documentación y descripción detallada de cada solicitud.
  • Ejemplos de soluciones listas utilizando el SDK en la sección Marketplace.
  • Serie de webinars Wialon API and SDK: how-to videos (en inglés).
  • Colección de ejemplos (en inglés) en la aplicación Postman para probar solicitudes API.
  • Sección del foro Custom SDK development.

Creación de una cuenta

Antes de realizar esta acción, es necesario recordar dos términos importantes:

  • Creador: es el usuario en nombre del cual se crea un determinado elemento del sistema.
  • Cuenta: es un macroobjeto del sistema que representa la unidad de un recurso, un usuario y un plan de facturación.

Por lo tanto, para crear una cuenta, es necesario:

  1. Encontrar un plan de facturación adecuado.
  2. Encontrar el system ID del usuario creador, bajo el cual se creará el nuevo usuario.
  3. Crear un nuevo usuario en nombre del usuario encontrado.
  4. Crear un recurso en nombre del nuevo usuario.
  5. Unir el nuevo usuario, el recurso y el plan de facturación en una cuenta.

Veamos las solicitudes necesarias en cada uno de estos pasos con el siguiente ejemplo: es necesario crear una cuenta con el nombre sdk_account, que en la jerarquía del servicio estará bajo la cuenta del usuario manager.

1. Búsqueda del plan de facturación

Usamos la solicitud core/get_account_data.

https://hst-api.wialon.com/wialon/ajax.html?svc=core/get_account_data¶ms={"type":1}&sid=SESSION_IDENTIFIER

A diferencia de otros elementos, el plan de facturación no tiene un ID del sistema. Si es necesario referirse a él, el parámetro único es el nombre.

Los nombres de los planes de facturación asignados se mostrarán en la respuesta a la solicitud en el parámetro subPlans. Supongamos que usaremos el plan de facturación con el nombre standard_client.

Si en la respuesta no se muestran planes de facturación, es necesario verificar si la cuenta tiene derechos de distribuidor y si se le han asignado planes de facturación.

2. Búsqueda del ID del sistema del usuario creador

Usamos la solicitud core/search_items.

https://hst-api.wialon.com/wialon/ajax.html?svc=core/search_items¶ms={"spec":{"itemsType":"user","propName":"sys_name","propValueMask":"manager","sortType":"sys_name"},"force":1,"flags":1,"from":0,"to":0}&sid=SESSION_IDENTIFIER

Parámetro y su valor

Descripción
"itemsType":"user"La búsqueda se realizará por usuarios.
"propName":"sys_name"La búsqueda se realizará por el nombre del elemento.
"propValueMask":"manager"La respuesta mostrará el usuario cuyo nombre coincide completamente con la expresión manager.
"sortType":"sys_name"La clasificación se realizará por el nombre del elemento.
"force":1Los resultados de búsquedas anteriores no se tendrán en cuenta.
"flags":1La respuesta contendrá solo información sobre las propiedades básicas.
"from":0;"to":0No se aplicarán restricciones en la cantidad de elementos encontrados.

El ID del sistema del usuario se mostrará en la respuesta a la solicitud en el parámetro id. Supongamos que tiene el valor 11111.

3. Creación de un nuevo usuario

Usamos la solicitud core/create_user.

https://hst-api.wialon.com/wialon/ajax.html?svc=core/create_user¶ms={"creatorId":11111,"name":"sdk_account","password":"Pa%24%24w0rd","dataFlags":1}&sid=SESSION_IDENTIFIER
Parámetro y su valorDescripción
"creatorId":11111El creador del nuevo usuario será el usuario con el ID del sistema 11111.
"name":"sdk_account"El nuevo usuario tendrá el nombre sdk_account.
"password":"Pa%24%24w0rd"

El nuevo usuario tendrá la contraseña Pa$$w0rd.

Dado que por requisitos de seguridad la contraseña debe contener caracteres especiales, estos deben estar codificados para su transmisión en la URL.

"dataFlags":1La respuesta mostrará solo las propiedades básicas del nuevo usuario.

El ID del sistema del usuario se mostrará en la respuesta a la solicitud en el parámetro id. Supongamos que tiene el valor 22222.

4. Creación de un recurso

Usamos la solicitud core/create_resource.

https://hst-api.wialon.com/wialon/ajax.html?svc=core/create_resource¶ms={"creatorId":22222,"name":"sdk_account","dataFlags":1,"skipCreatorCheck":0}&sid=SESSION_IDENTIFIER
Parámetro y su valorDescripción
"creatorId":22222El creador del nuevo recurso será el usuario con el ID del sistema 22222.
"name":"sdk_account"El nuevo recurso tendrá el nombre sdk_account.
"dataFlags":1La respuesta mostrará solo las propiedades básicas del nuevo recurso.
"skipCreatorCheck":0Verificar si el usuario es creador de algún elemento del sistema en este momento.

El ID del sistema del recurso se mostrará en la respuesta a la solicitud en el parámetro id. Supongamos que tiene el valor 33333.

5. Unión en una cuenta

Usamos la solicitud account/create_account.

https://hst-api.wialon.com/wialon/ajax.html?svc=account/create_account¶ms={"itemId":33333,"plan":"standard_client"}&sid=SESSION_IDENTIFIER
Parámetro y su valorDescripción
"itemId":33333

La nueva cuenta contendrá el recurso con el ID del sistema 33333.

"plan":"standard_client"La nueva cuenta utilizará el plan de facturación standard_client.

Arriba se consideran solo los pasos mínimos necesarios para la aparición de una cuenta en el sistema. Para realizar otras configuraciones, es necesario usar solicitudes separadas de la lista en la documentación.

Creación de una unidad

Para crear una unidad mediante el Remote API, es necesario:

  1. Encontrar el ID del sistema del tipo de equipo.
  2. Encontrar el ID del sistema del usuario creador, en cuya cuenta se ubicará la futura unidad.
  3. Crear la unidad.
  4. Asignar un ID único a la unidad.

Veamos las solicitudes necesarias con el siguiente ejemplo: es necesario crear una unidad Delivery truck con el tipo de equipo Wialon IPS y el ID único 12345 en la cuenta del usuario sdk_account.

1. Búsqueda del ID del sistema del tipo de equipo

Usamos la solicitud core/get_hw_types.

https://hst-api.wialon.com/wialon/ajax.html?svc=core/get_hw_types¶ms={"filterType":"name","filterValue":["Wialon%20IPS"],"includeType":0,"ignoreRename":1}&sid=SESSION_IDENTIFIER
Parámetro y su valorDescripción
"filterType":"name"La filtración se realizará por el nombre del tipo de equipo.
"filterValue":["Wialon%20IPS"]La búsqueda se realizará por la expresión Wialon IPS.
"includeType":0La respuesta no mostrará información adicional sobre el tipo de equipo.
"ignoreRename":1La respuesta ignorará los renombramientos de tipos de equipo.

El ID del sistema del tipo de equipo se mostrará en la respuesta a la solicitud en el parámetro id. Supongamos que tiene el valor 44444.

El ID del sistema de un tipo de equipo puede diferir para los diferentes servicios Wialon Hosting y Wialon Local.

2. Búsqueda del ID del sistema del usuario creador

Usamos la solicitud core/search_items.

https://hst-api.wialon.com/wialon/ajax.html?svc=core/search_items¶ms={"spec":{"itemsType":"user","propName":"sys_name","propValueMask":"sdk_account","sortType":"sys_name"},"force":1,"flags":1,"from":0,"to":0}&sid=SESSION_IDENTIFIER
Parámetro y su valorDescripción
"itemsType":"user"La búsqueda se realizará por usuarios.
"propName":"sys_name"La búsqueda se realizará por el nombre del elemento.
"propValueMask":"sdk_account"La respuesta mostrará el usuario cuyo nombre coincide completamente con la palabra sdk_account.
"sortType":"sys_name"La clasificación se realizará por el nombre del elemento.
"force":1Los resultados de búsquedas anteriores no se tendrán en cuenta.
"flags":1La respuesta contendrá solo información sobre las propiedades básicas.
"from":0;"to":0No se aplicarán restricciones en la cantidad de elementos encontrados.

El ID del sistema del usuario se mostrará en la respuesta a la solicitud en el parámetro id. Supongamos que tiene el valor 22222.

3. Creación de la unidad

Usamos la solicitud core/create_unitcore/create_unit.

https://hst-api.wialon.com/wialon/ajax.html?svc=core/create_unit¶ms={"creatorId":22222,"name":"Delivery%20truck","hwTypeId":"44444","dataFlags":1}&sid=SESSION_IDENTIFIER
Parámetro y su valorDescripción
"creatorId":22222El creador de la nueva unidad será el usuario con el ID del sistema 22222.
"name":"Delivery%20truck"El nombre de la nueva unidad será Delivery truck.
"hwTypeId":"44444"El ID del sistema del tipo de equipo para la nueva unidad será 44444.
"dataFlags":1La respuesta mostrará solo las propiedades básicas de la nueva unidad.

El ID del sistema de la unidad se mostrará en la respuesta a la solicitud en el parámetro id. Supongamos que tiene el valor 55555.

4. Asignación de un ID único

Usamos la solicitud unit/update_device_type.

https://hst-api.wialon.com/wialon/ajax.html?svc=unit/update_device_type¶ms={"itemId":55555,"deviceTypeId":"44444","uniqueId":"12345"}&sid=SESSION_IDENTIFIER
Parámetro y su valorDescripción
"itemId":55555El cambio de configuración se realizará para la unidad con el ID del sistema 55555.
"deviceTypeId":"44444"

El ID del sistema del tipo de equipo será 44444.

Con este parámetro se puede cambiar el tipo de equipo de la unidad.

"uniqueId":"12345"El ID único de la unidad será 12345.

Arriba se consideran solo los pasos mínimos necesarios para la aparición de una unidad en el sistema. Para realizar otras configuraciones, es necesario usar solicitudes separadas de la lista en la documentación.

Ekaterina Grib,Customer Service Engineer

Introducción al SDK: ejecución de informes
  • technical_consulting

En este artículo se considerará el trabajo con plantillas de informes mediante el Remote API. La ejecución de informes a través del SDK implica una secuencia de acciones obligatorias que no son visibles al trabajar en la interfaz web. Para una visión completa, se proporcionarán ejemplos de trabajo con informes con y sin agrupación.

También pueden ser útiles:

  • Artículo Introducción al SDK: solicitudes básicas.
  • Portal para desarrolladores (en inglés) con documentación y descripción detallada de cada solicitud.
  • Ejemplos de soluciones listas utilizando el SDK en la sección Marketplace.
  • Ejemplos de códigos (en inglés) para trabajar con informes.
  • Serie de webinars Wialon API and SDK: how-to videos (en inglés).
  • Colección de ejemplos (en inglés) en la aplicación Postman para probar solicitudes API.
  • Sección del foro Custom SDK development.

Creación de informes

En la mayoría de los casos, los usuarios crean plantillas de informes en la interfaz web y luego las ejecutan mediante solicitudes API. A continuación, consideraremos precisamente estos casos.

Sin embargo, la creación de plantillas de informes también está disponible a través del SDK, para lo cual se debe utilizar la solicitud report/update_report.

Secuencia de acciones

Para obtener resultados de informes mediante el Remote API, es necesario enviar varias solicitudes consecutivas. El uso de algunas de ellas depende de la presencia de agrupación en el informe y de la cantidad de datos analizados. Presentamos la lista más general de acciones:

  1. Autorización mediante la solicitud token/login y configuración de la localización mediante la solicitud render/set_locale.

  2. Obtención de los ID del sistema necesarios para:

    • el objeto para el cual se debe ejecutar el informe;

      Dado que los informes pueden ejecutarse para conductores, remolques, pasajeros, geocercas y sus grupos, en algunos casos también será necesario obtener los IDs del sistema para estos subelementos.

    • el recurso en el que se encuentra la plantilla del informe;
    • la propia plantilla del informe.

  3. Ejecución del informe mediante la solicitud report/exec_report.

    En general, recomendamos ejecutar el informe en segundo plano en el servidor. A pesar del aumento en la cantidad de pasos, esto puede ser útil si el informe puede tardar mucho en ejecutarse debido a la gran cantidad de unidades, el intervalo de ejecución del informe, la cantidad de tablas y gráficos, etc. A continuación, en el artículo se considerará precisamente la ejecución del informe en segundo plano.

    Si el informe no se ejecuta en segundo plano en el servidor, la respuesta a esta solicitud será similar a la respuesta del paso 5, por lo que se puede pasar directamente al paso 6.

  4. Verificación del estado de ejecución del informe mediante la solicitud report/get_report_status. Después de confirmar que el informe está listo, se puede continuar con las instrucciones.

  5. Obtención del resultado del informe mediante la solicitud report/apply_report_result.
    El resultado de esta solicitud proporcionará la cantidad de filas, columnas y niveles de anidamiento si hay agrupación.

  6. Obtención de las filas de la tabla mediante la solicitud report/get_result_rows para un informe sin agrupación o mediante la solicitud report/select_result_rows para un informe con agrupación.
    La selección de la tabla, los niveles de anidamiento y las filas mostradas se realiza en función de los datos de la respuesta a la solicitud anterior.

  7. Exportación a archivo mediante la solicitud report/export_result.
    Este paso es opcional, pero bastante sencillo y útil, por lo que también lo consideraremos.

  8. Eliminación del resultado del informe anterior mediante la solicitud report/cleanup_result.
    Este paso es obligatorio si se deben ejecutar varios informes en una sesión.

Las siguientes solicitudes no pueden ejecutarse simultáneamente:

  • report/exec_report
  • report/export_result
  • report/get_result_chart
  • report/get_result_map
  • report/get_result_chart
  • resource/get_driver_bindings
  • resource/get_trailer_bindings
  • resource/get_tag_bindings
  • exchange/import_zones_save
  • exchange/import_json
  • exchange/import_messages
  • exchange/import_pois_read
  • exchange/import_zones_read
  • unit/get_trips
  • render/create_messages_layer
  • messages/load_interval
  • exchange/export_zones
  • exchange/export_json
  • exchange/export_messages
  • exchange/export_pois
  • account/get_account_history

A continuación, consideraremos dos ejemplos de trabajo con informes (sin agrupación y con agrupación).

Trabajo con un informe sin agrupación

Es necesario obtener los resultados de la ejecución del informe Lista de viajes, disponible para el usuario autorizado por token, para la unidad Truck 0769 (ID del sistema 55555) para el intervalo de tiempo del 30 de junio de 2023 a las 20:00 al 1 de julio de 2023 a las 03:59 (GMT+0) en forma de respuesta a la solicitud API y archivo PDF.

En la interfaz web, el resultado se ve de la siguiente manera:

1. Autorización y configuración de la localización

Usamos la solicitud token/login.

https://hst-api.wialon.com/wialon/ajax.html?svc=token/login¶ms={"token":"TOKEN_VALUE"}

La autorización se describe con más detalle en uno de los artículos anteriores.

La configuración de la localización incluye la configuración de la zona horaria (también se consideró anteriormente), el formato de la fecha y otros parámetros.

Si la configuración de la zona horaria se realiza dentro de la sesión, al ejecutar el informe, el tiempo se establece en GMT+0.

Usamos la solicitud render/set_locale.

https://hst-api.wialon.com/wialon/ajax.html?svc=render/set_locale¶ms={"tzOffset":134217728,"language":"es","formatDate":"%25E.%25m.%25Y%20%25H:%25M:%25S"}&sid=SESSION_IDENTIFIER
Parámetro y su valorDescripción
"tzOffset":134217728Se aplicará la zona horaria GMT+0 (sin horario de verano).
"language":"es"Se utilizará el idioma español.
"formatDate":"%25Y.%25m.%25E%20%25H:%25M:%25S"Se utilizará el formato de fecha yyyy-MM-dd y el formato de hora HH:mm:ss.

No realizar la configuración de la localización puede llevar a diferencias en los resultados al ejecutar el informe mediante el Remote API y la interfaz web.

2. Obtención de los ID del sistema

En uno de los artículos anteriores ya describimos cómo realizar la búsqueda de elementos por criterios, por lo que ahora nos centraremos solo en la búsqueda del recurso y la plantilla del informe.

Obtendremos una lista de todos los recursos en los que se ha creado la plantilla del informe con el nombre Lista de viajes, disponible para el usuario autorizado por token. Usamos la solicitud core/search_items:

https://hst-api.wialon.com/wialon/ajax.html?svc=core/search_items¶ms={"spec":{"itemsType":"avl_resource","propType":"propitemname","propName":"reporttemplates","propValueMask":"Lista%20de%20viajes","sortType":"sys_name"},"force":1,"flags":8193,"from":0,"to":0}&sid=SESSION_IDENTIFIER
Parámetro y su valorDescripción
"itemsType":"avl_resource"La búsqueda se realizará por recursos.
"propType":"propitemname"La búsqueda se realizará por el nombre del subelemento.
"propName":"reporttemplates"La búsqueda se realizará por el nombre de la plantilla del informe.
"propValueMask":"Lista%20de%20viajes"La respuesta mostrará una lista de recursos en los que se ha creado la plantilla del informe con el nombre Lista de viajes.
"sortType":"sys_name"La clasificación se realizará por el nombre del elemento.
"force":1Los resultados de búsquedas anteriores no se tendrán en cuenta.
"flags":8193

La respuesta contendrá información sobre las propiedades básicas y las plantillas de informes creadas.

1 + 8192 = 8193

"from":0;"to":0No se aplicarán restricciones en la cantidad de elementos encontrados.
 Respuesta
{
	"searchSpec":{
		"itemsType":"avl_resource",
		"propName":"reporttemplates",
		"propValueMask":"Lista de viajes",
		"sortType":"sys_name",
		propType:"propitemname",
		or_logic:"0"
		},
	"dataFlags":8193,
	"totalItemsCount":1,
	"indexFrom":0,
	"indexTo":0,
	"items":[
		{
			"nm":"sdk_account",
			"cls":3,
			"id":12345678,
			"mu":0,
			"rep":{
				1:{
					"id":1,
					"n":"Lista de viajes",
					"ct":"avl_unit",
					"c":59352
				},
				2:{
					"id":2,
					"n":"Viajes con agrupación",
					"ct":"avl_unit",
					"c":6883
				}
			},
			"repmax":-1,
			"uacl":-1
		}
	]
}

Prestemos atención a los siguientes parámetros de la respuesta:

  • nm: nombre del recurso;
  • rep: array de plantillas de informes creadas en el recurso;

    Si este parámetro aparece vacío, significa que no se han creado plantillas de informes en el recurso.

  • n: nombre del subelemento;
  • id: ID del sistema.

En este caso, el usuario tiene acceso al recurso sdk_account con el ID del sistema 12345678, en el que se encuentra la plantilla del informe Lista de viajes con el ID del sistema 1.

3. Ejecución del informe

Usamos la solicitud report/exec_report.

https://hst-api.wialon.com/wialon/ajax.html?svc=report/exec_report¶ms={"reportResourceId":12345678,"reportTemplateId":1,"reportObjectId":55555,"reportObjectSecId":0,"interval":{"flags":0,"from":1688144400,"to":1688173199},"remoteExec":1}&sid=SESSION_IDENTIFIER
Parámetro y su valorDescripción
"reportResourceId":12345678La plantilla del informe se seleccionará del recurso con el ID del sistema 12345678.
"reportTemplateId":1Se ejecutará la plantilla del informe con el ID del sistema 1.
"reportObjectId":55555El informe se ejecutará para la unidad con el ID del sistema 55555.
"reportObjectSecId":0El informe no se ejecutará para un subelemento.
"flags":0El informe se ejecutará para el intervalo especificado.
"from":1688144400

El inicio del intervalo será el 30 de junio de 2023 a las 20:00 (GMT+0).

En las solicitudes se utiliza el tiempo Unix. Para convertir la fecha y hora a tiempo Unix, se pueden usar herramientas en línea de acceso público.

"to":1688173199El final del intervalo será el 1 de julio de 2023 a las 03:59 (GMT+0).
"remoteExec":1El informe se ejecutará en segundo plano en el servidor.
 Respuesta
{
	"remoteExec":1
}

4. Verificación del estado de ejecución

Dado que el informe se ejecuta en segundo plano en el servidor, verificamos el estado de su ejecución utilizando la solicitud report/get_report_status.

https://hst-api.wialon.com/wialon/ajax.html?svc=report/get_report_status¶ms={}&sid=SESSION_IDENTIFIER
 Respuesta
{
	"status":4
}

El código de estado 4 significa que el informe se ha completado. La interpretación de los demás valores se puede encontrar en la página con la descripción de la solicitud.

5. Obtención del resultado del informe

Usamos la solicitud report/apply_report_result.

https://hst-api.wialon.com/wialon/ajax.html?svc=report/apply_report_result¶ms={}&sid=SESSION_IDENTIFIER
 Respuesta
{
	"reportResult":{
		"msgsRendered":0,
		"stats":[],
		"tables":[
			{
				"name":"unit_trips",
				"label":"Viajes",
				"grouping":{},
				"flags":4224,
				"rows":4,
				"level":1,
				"columns":5,
				"header":[
					"№",
					"Comienzo",
					"Fin",
					"Duración",
					"Kilometraje"
				],
				"header_type":[
					"",
					"time_begin",
					"time_end",
					"duration",
					"mileage"
				]
			}
		],
		"attachments":[]
	}
}

Tres parámetros clave de la respuesta que nos interesan son los siguientes:

  • tables: muestra la cantidad de tablas en el informe en forma de array. En este caso, solo se menciona una tabla: Viajes, por lo que su índice será 0.
  • rows: cantidad de filas en la tabla, en este caso son 4. Por lo tanto, sus índices están en el rango de 0 a 3.
  • level: cantidad de niveles de anidamiento, en este caso es 1, ya que el informe no tiene agrupación.

Los índices de tablas, filas, columnas y niveles de anidamiento comienzan desde 0. Esto debe tenerse en cuenta al referirse a ellos posteriormente.

También se pueden enumerar brevemente otros parámetros de la respuesta. El parámetro columns indica la cantidad de columnas, luego sus nombres se describen en el parámetro header. El valor cero del parámetro msgsRendered indica que en la plantilla del informe no se incluye la visualización de mensajes en el mapa. Los parámetros vacíos stats y attachments indican que en la plantilla del informe no hay Estadísticas ni adjuntos (por ejemplo, gráficas).

6. Obtención de las filas de la tabla

Conociendo el índice del contenido de la tabla, la mostramos utilizando la solicitud report/get_result_rows.

https://hst-api.wialon.com/wialon/ajax.html?svc=report/get_result_rows¶ms={"tableIndex":0,"indexFrom":0,"indexTo":3}&sid=SESSION_IDENTIFIER
Parámetro y su valorDescripción
"tableIndex":0

Se mostrará el contenido de la tabla con el índice 0.

"indexFrom":0

La primera fila mostrada tendrá el índice 0.

"indexTo":3La última fila mostrada tendrá el índice 3.
 Respuesta
[
	{
		"n":0,
		"i1":0,
		"i2":790,
		"t1":1688144420,
		"t2":1688154878,
		"d":0,
		"c":[
			"1",
			{
				"t":"2023-06-30 20:00:20",
				"v":1688144420,
				"y":47.2941741943,
				"x":26.4906959534,
				"u":55555
			},
			{
				"t":"2023-06-30 22:54:38",
				"v":1688154878,
				"y":43.8697662354,
				"x":26.0177116394,
				"u":55555
			},
			"2:54:18",
			"469.54 km"
		]
	},
	{
		"n":1,
		"i1":936,
		"i2":2171,
		"t1":1688155181,
		"t2":1688169690,
		"d":0,
		"c":[
			"2",
			{
				"t":"2023-06-30 22:59:41",
				"v":1688155181,
				"y":43.8698196411,
				"x":26.0177154541,
				"u":55555
			},
			{
				"t":"2023-07-01 03:01:30",
				"v":1688169690,
				"y":41.7139854431,
				"x":26.3660545349,
				"u":55555
			},
			"4:01:49",
			"343.84 km"
		]
	},
	{
		"n":2,
		"i1":2340,
		"i2":2486,
		"t1":1688170034,
		"t2":1688170841,
		"d":0,
		"c":[
			"3",
			{
				"t":"2023-07-01 03:07:14",
				"v":1688170034,
				"y":41.7140579224,
				"x":26.365901947,
				"u":55555
			},
			{
				"t":"2023-05-01 09:23:10",
				"v":1688170841,
				"y":41.7122383118,
				"x":26.3712425232,
				"u":55555
			},
			"0:13:27",
			"1.39 km"
		]
	},
	{
		"n":3,
		"i1":2833,
		"i2":2910,
		"t1":1688171565,
		"t2":1688173175,
		"d":0,
		"c":[
			"4",
			{
				"t":"2023-07-01 03:32:45",
				"v":1688171565,
				"y":41.7120819092,
				"x":26.3711204529,
				"u":55555
			},
			{
				"t":"2023-07-01 03:59:35",
				"v":1688173175,
				"y":41.5760040283,
				"x":26.9871864319,
				"u":55555
			},
			"0:26:50",
			"57.84 km"
		]
	}
]

7. Exportación a archivo

Exportamos el resultado a un archivo PDF utilizando la solicitud report/export_result.

https://hst-api.wialon.com/wialon/ajax.html?svc=report/export_result¶ms={"format":2,"compress":0,"outputFileName":"Lista%20de%20viajes"}&sid=SESSION_IDENTIFIER
Parámetro y su valorDescripción
"format":2El resultado del informe se exportará en formato PDF.
"compress":0El archivo exportado no se comprimirá (no se añadirá a un archivo).
"outputFileName":"Lista%20de%20viajes"El archivo exportado tendrá el nombre Lista de viajes.

La respuesta a esta solicitud API no se muestra, en su lugar, la descarga del archivo comienza automáticamente.

8. Eliminación del resultado del informe anterior

Usamos la solicitud report/cleanup_result.

https://hst-api.wialon.com/wialon/ajax.html?svc=report/cleanup_result¶ms={}&sid=SESSION_IDENTIFIER
 Respuesta
{
	"error":0
}

Un valor de cero significa que la eliminación fue exitosa.

Trabajo con un informe con agrupación

Es necesario obtener los resultados de la ejecución del informe Viajes con agrupación, disponible para el usuario autorizado por token, para la unidad Truck 0769 (ID del sistema 55555) para el intervalo de tiempo del 30 de junio de 2023 a las 20:00 al 1 de julio de 2023 a las 03:59 (GMT+0) en forma de respuesta a la solicitud API y archivo PDF.

En la interfaz web, el resultado se ve de la siguiente manera:

El resultado de la ejecución en la interfaz web muestra que la tabla Viajes tiene una agrupación por meses y fechas, es decir, el informe tiene 3 niveles de anidamiento:

  • En el primer nivel se encuentran las filas con los meses;
  • En el segundo nivel, las filas con las fechas dentro del mes;
  • En el tercer nivel, las filas con los viajes dentro de la fecha.

1. Autorización y configuración de la localización

Usamos la solicitud token/login.

https://hst-api.wialon.com/wialon/ajax.html?svc=token/login¶ms={"token":"TOKEN_VALUE"}

La autorización se describe con más detalle en uno de los artículos anteriores.

La configuración de la localización incluye la configuración de la zona horaria (también se consideró anteriormente), el formato de la fecha y otros parámetros.

Si la configuración de la zona horaria se realiza dentro de la sesión, al ejecutar el informe, el tiempo se establece en GMT+0.

Usamos la solicitud render/set_locale.

https://hst-api.wialon.com/wialon/ajax.html?svc=render/set_locale¶ms={"tzOffset":134217728,"language":"es","formatDate":"%25E.%25m.%25Y%20%25H:%25M:%25S"}&sid=SESSION_IDENTIFIER
Parámetro y su valorDescripción
"tzOffset":134217728Se aplicará la zona horaria GMT+0 (sin horario de verano).
"language":"es"Se utilizará el idioma español.
"formatDate":"%25Y.%25m.%25E%20%25H:%25M:%25S"Se utilizará el formato de fecha yyyy-MM-dd y el formato de hora HH:mm:ss.

No realizar la configuración de la localización puede llevar a diferencias en los resultados al ejecutar el informe mediante el Remote API y la interfaz web.

2. Obtención de los ID del sistema

En uno de los artículos anteriores ya describimos cómo realizar la búsqueda de elementos por criterios, por lo que ahora nos centraremos solo en la búsqueda del recurso y la plantilla del informe.

Obtendremos una lista de todos los recursos en los que se ha creado la plantilla del informe con el nombre Viajes con agrupación, disponible para el usuario autorizado por token. Usamos la solicitud core/search_items:

https://hst-api.wialon.com/wialon/ajax.html?svc=core/search_items¶ms={"spec":{"itemsType":"avl_resource","propType":"propitemname","propName":"reporttemplates","propValueMask":"Viajes%20con%20agrupación","sortType":"sys_name"},"force":1,"flags":8193,"from":0,"to":0}&sid=SESSION_IDENTIFIER
Parámetro y su valorDescripción
"itemsType":"avl_resource"La búsqueda se realizará por recursos.
"propType":"propitemname"La búsqueda se realizará por el nombre del subelemento.
"propName":"reporttemplates"La búsqueda se realizará por el nombre de la plantilla del informe.
"propValueMask":"Viajes%20con%20agrupación"La respuesta mostrará una lista de recursos en los que se ha creado la plantilla del informe con el nombre Viajes con agrupación.
"sortType":"sys_name"La clasificación se realizará por el nombre del elemento.
"force":1Los resultados de búsquedas anteriores no se tendrán en cuenta.
"flags":8193

La respuesta contendrá información sobre las propiedades básicas y las plantillas de informes creadas.

1 + 8192 = 8193

"from":0;"to":0No se aplicarán restricciones en la cantidad de elementos encontrados.
 Respuesta
{
	"searchSpec":{
		"itemsType":"avl_resource",
		"propName":"reporttemplates",
		"propValueMask":"Viajes con agrupación",
		"sortType":"sys_name",
		propType:"propitemname",
		or_logic:"0"
		},
	"dataFlags":8193,
	"totalItemsCount":1,
	"indexFrom":0,
	"indexTo":0,
	"items":[
		{
			"nm":"sdk_account",
			"cls":3,
			"id":12345678,
			"mu":0,
			"rep":{
				1:{
					"id":1,
					"n":"Lista de viajes",
					"ct":"avl_unit",
					"c":59352
				},
				2:{
					"id":2,
					"n":"Viajes con agrupación",
					"ct":"avl_unit",
					"c":6883
				}
			},
			"repmax":-1,
			"uacl":-1
		}
	]
}

Prestemos atención a los siguientes parámetros de la respuesta:

  • nm: nombre del recurso;
  • rep: array de plantillas de informes creadas en el recurso;

    Si este parámetro aparece vacío, significa que no se han creado plantillas de informes en el recurso.

  • n: nombre del subelemento;
  • id: ID del sistema.

En este caso, el usuario tiene acceso al recurso sdk_account con el ID del sistema 12345678, en el que se encuentra la plantilla del informe Viajes con agrupación con el ID del sistema 2.

3. Ejecución del informe

Usamos la solicitud report/exec_report.

https://hst-api.wialon.com/wialon/ajax.html?svc=report/exec_report¶ms={"reportResourceId":12345678,"reportTemplateId":2,"reportObjectId":55555,"reportObjectSecId":0,"interval":{"flags":0,"from":1688144400,"to":1688173199},"remoteExec":1}&sid=SESSION_IDENTIFIER
Parámetro y su valorDescripción
"reportResourceId":12345678La plantilla del informe se seleccionará del recurso con el ID del sistema 12345678.
"reportTemplateId":2Se ejecutará la plantilla del informe con el ID del sistema 2.
"reportObjectId":55555El informe se ejecutará para la unidad con el ID del sistema 55555.
"reportObjectSecId":0El informe no se ejecutará para un subelemento.
"flags":0El informe se ejecutará para el intervalo especificado.
"from":1688144400

El inicio del intervalo será el 30 de junio de 2023 a las 20:00 (GMT+0).

En las solicitudes se utiliza el tiempo Unix. Para convertir la fecha y hora a tiempo Unix, se pueden usar herramientas en línea de acceso público.

"to":1688173199El final del intervalo será el 1 de julio de 2023 a las 03:59 (GMT+0).
"remoteExec":1El informe se ejecutará en segundo plano en el servidor.
 Respuesta
{
	"remoteExec":1
}

4. Verificación del estado de ejecución

Dado que el informe se ejecuta en segundo plano en el servidor, verificamos el estado de su ejecución utilizando la solicitud report/get_report_status.

https://hst-api.wialon.com/wialon/ajax.html?svc=report/get_report_status¶ms={}&sid=SESSION_IDENTIFIER
 Respuesta
{
	"status":4
}

El código de estado 4 significa que el informe se ha completado. La interpretación de los demás valores se puede encontrar en la página con la descripción de la solicitud.

5. Obtención del resultado del informe

Usamos la solicitud report/apply_report_result.

https://hst-api.wialon.com/wialon/ajax.html?svc=report/apply_report_result¶ms={}&sid=SESSION_IDENTIFIER
 Respuesta
{
	"reportResult":{
		"msgsRendered":0,
		"stats":[],
		"tables":[
			{
				"name":"unit_trips",
				"label":"Viajes",
				"grouping":{
					"nested":{
						"type":"day"
					},
					"type":"month"
				},
				"flags":4491,
				"rows":2,
				"level":3,
				"columns":6,
				"header":[
					"№",
					"Agrupación",
					"Comienzo",
					"Fin",
					"Duración",
					"Kilometraje"
				],
				"header_type":[
					"",
					"",
					"time_begin",
					"time_end",
					"duration",
					"mileage"
				]
			}
		],
		"attachments":[]
	}
}

Tres parámetros clave de la respuesta que nos interesan son los siguientes:

  • tables: muestra la cantidad de tablas en el informe en forma de array. En este caso, solo se menciona una tabla: Viajes, por lo que su índice será 0.
  • rows: cantidad de filas en la tabla, en este caso son 2. Por lo tanto, sus índices están en el rango de 0 a 1. Se refiere solo a las filas en el nivel superior de anidamiento, dentro de ellas puede haber más.
  • level: cantidad de niveles de anidamiento, en este caso es 3, ya que el informe tiene agrupación. Por lo tanto, en la tabla existen niveles con índices de 0 a 2.

Los índices de tablas, filas, columnas y niveles de anidamiento comienzan desde 0. Esto debe tenerse en cuenta al referirse a ellos posteriormente.

También se pueden enumerar brevemente otros parámetros de la respuesta. El parámetro columns indica la cantidad de columnas, luego sus nombres se describen en el parámetro header. El valor cero del parámetro msgsRendered indica que en la plantilla del informe no se incluye la visualización de mensajes en el mapa. Los parámetros vacíos stats y attachments indican que en la plantilla del informe no hay Estadísticas ni adjuntos (por ejemplo, gráficas).

6. Selección de filas en una tabla multinivel

Conociendo el índice del contenido de la tabla, la mostramos utilizando la solicitud report/select_result_rows.

https://hst-api.wialon.com/wialon/ajax.html?svc=report/select_result_rows¶ms={"tableIndex":0,"config":{"type":"range","data":{"from":0,"to":1,"level":2}}}&sid=SESSION_IDENTIFIER
Parámetro y su valorDescripción
"tableIndex":0Se mostrará el contenido de la tabla con el índice 0.
"type":"range"Se solicitará una secuencia de filas.
"from":0La primera fila mostrada tendrá el índice 0.
"to":1La última fila mostrada tendrá el índice 1.
"level":2El resultado mostrará niveles de anidamiento hasta el índice 2.
 Respuesta
[
	{
		"n":0,
		"i1":0,
		"i2":1188,
		"t1":1688144420,
		"t2":1688158739,
		"d":1,
		"c":[
			"1",
			"June",
			{
				"t":"20:00:20",
				"v":1688144420,
				"y":47.2941741943,
				"x":26.4906959534,
				"u":55555
			},
			{
				"t":"23:58:59",
				"v":1688158739,
				"y":43.1049079895,
				"x":25.6173667908,
				"u":55555
			},
			"3:53:36",
			"576.60 km"
		],
		"r":[
			{
				"n":0,
				"i1":0,
				"i2":1188,
				"t1":1688144420,
				"t2":1688158739,
				"d":2,
				"c":[
					"1.1",
					"2023-06-30",
					{
						"t":"20:00:20",
						"v":1688144420,
						"y":47.2941741943,
						"x":26.4906959534,
						"u":55555
					},
					{
						"t":"23:58:59",
						"v":1688158739,
						"y":43.1049079895,
						"x":25.6173667908,
						"u":55555
					},
					"3:53:36",
					"576.60 km"
				],
				"r":[
					{
						"n":0,
						"i1":0,
						"i2":790,
						"t1":1688144420,
						"t2":1688154878,
						"d":0,
						"c":[
							"1.1.1",
							"2023-06-30 20:00:20",
							{
								"t":"20:00:20",
								"v":1688144420,
								"y":47.2941741943,
								"x":26.4906959534,
								"u":55555
							},
							{
								"t":"22:54:38",
								"v":1688154878,
								"y":43.8697662354,
								"x":26.0177116394,
								"u":55555
							},
							"2:54:18",
							"469.54 km"
						]
					},
					{
						"n":1,
						"i1":936,
						"i2":1188,
						"t1":1688155181,
						"t2":1688158739,
						"d":0,
						"c":[
							"1.1.2",
							"2023-06-30 22:59:41",
							{
								"t":"22:59:41",
								"v":1688155181,
								"y":43.8698196411,
								"x":26.0177154541,
								"u":55555
							},
							{
								"t":"23:58:59",
								"v":1688158739,
								"y":43.1049079895,
								"x":25.6173667908,
								"u":55555
							},
							"0:59:18",
							"107.06 km"
						]
					}
				]
			}
		]
	},
	{
		"n":1,
		"i1":1193,
		"i2":2910,
		"t1":1688158805,
		"t2":1688173175,
		"d":1,
		"c":[
			"2",
			"July",
				{
					"t":"00:00:05",
					"v":1688158805,
					"y":43.0983314514,
					"x":25.6316585541,
					"u":55555
				},
				{
					"t":"03:59:35",
					"v":1688173175,
					"y":41.5760040283,
					"x":26.9871864319,
					"u":55555
				},
				"3:41:42",
				"294.55 km"
		],
		"r":[
			{
				"n":0,
				"i1":1193,
				"i2":2910,
				"t1":1688158805,
				"t2":1688173175,
				"d":3,
				"c":[
					"2.1",
					"2023-07-01",
					{
						"t":"00:00:05",
						"v":1688158805,
						"y":43.0983314514,
						"x":25.6316585541,
						"u":55555
					},
					{
						"t":"03:59:35",
						"v":1688173175,
						"y":41.5760040283,
						"x":26.9871864319,
						"u":55555
					},
					"3:41:42",
					"294.55 km"
				],
				"r":[
					{
						"n":0,
						"i1":1193,
						"i2":2171,
						"t1":1688158805,
						"t2":1688169690,
						"d":0,
						"c":[
							"2.1.1",
							"2023-07-01 00:00:05",
							{
								"t":"00:00:05",
								"v":1688158805,
								"y":43.0983314514,
								"x":25.6316585541,
								"u":55555
							},
							{
								"t":"03:01:30",
								"v":1688169690,
								"y":41.7139854431,
								"x":26.3660545349,
								"u":55555
							},
							"3:01:25",
							"235.31 km"
						]
					},
					{
						"n":1,
						"i1":2340,
						"i2":2486,
						"t1":1688170034,
						"t2":1688170841,
						"d":0,
						"c":[
							"2.1.2",
							"2023-07-01 03:07:14",
							{
								"t":"03:07:14",
								"v":1688170034,
								"y":41.7140579224,
								"x":26.365901947,
								"u":55555
							},
							{
								"t":"03:20:41",
								"v":1688170841,
								"y":41.7122383118,
								"x":26.3712425232,
								"u":55555
							},
							"0:13:27",
							"1.39 km"
						]
					},
					{
						"n":2,
						"i1":2833,
						"i2":2910,
						"t1":1688171565,
						"t2":1688173175,
						"d":0,
						"c":[
							"2.1.3",
							"2023-07-01 03:32:45",
							{
								"t":"03:32:45",
								"v":1688171565,
								"y":41.7120819092,
								"x":26.3711204529,
								"u":55555
							},
							{
								"t":"03:59:35",
								"v":1688173175,
								"y":41.5760040283,
								"x":26.9871864319,
								"u":55555
							},
							"0:26:50",
							"57.84 km"
						]
					}
				]
			}
		]
	}
]

7. Exportación a archivo

Exportamos el resultado a un archivo PDF utilizando la solicitud report/export_result.

https://hst-api.wialon.com/wialon/ajax.html?svc=report/export_result¶ms={"format":2,"compress":0,"outputFileName":"Viajes%20con%20agrupación"}&sid=SESSION_IDENTIFIER
Parámetro y su valorDescripción
"format":2El resultado del informe se exportará en formato PDF.
"compress":0El archivo exportado no se comprimirá (no se añadirá a un archivo).
"outputFileName":"Grouped%20trips"El archivo exportado tendrá el nombre Viajes con agrupación.

La respuesta a esta solicitud API no se muestra, en su lugar, la descarga del archivo comienza automáticamente.

8. Eliminación del resultado del informe anterior

Usamos la solicitud report/cleanup_result:

https://hst-api.wialon.com/wialon/ajax.html?svc=report/cleanup_result¶ms={}&sid=SESSION_IDENTIFIER
 Respuesta
{
	"error":0
}

Un valor de cero significa que la eliminación fue exitosa.

Características de la obtención de resultados

La obtención de datos de las tablas se puede realizar mediante las solicitudes report/get_result_rows o report/select_result_rows, en las que se utiliza el parámetro tableIndex para referirse a la tabla con un índice determinado. Es necesario tener en cuenta que al ejecutar el informe para diferentes intervalos, el índice de una misma tabla puede cambiar debido a la presencia o ausencia de otras tablas.

Para una mejor comprensión de la situación, consideremos un ejemplo. Supongamos que en la plantilla del informe se han añadido las tablas Viajes, Descargas de combustible y Geocercas. Al ejecutar el informe para el intervalo del 1 al 3 de julio, el resultado contendrá todas las tablas, por lo que sus índices serán los siguientes:

0 — Viajes
1 — Descargas de combustible
2 — Geocercas

Y al ejecutar el informe para el intervalo del 4 al 6 de julio, los índices de algunas tablas cambiarán debido a la ausencia de descargas registradas y tomarán otros valores:

0 — Viajes
1 — Geocercas

En este ejemplo, se puede ver claramente que al ejecutar el informe para diferentes intervalos, el índice de la tabla Geocercas cambia. Por lo tanto, referirse a la tabla con el índice 2 no siempre mostrará información sobre la visita a geocercas. Para corregir situaciones como esta, se recomienda aplicar verificaciones adicionales, por ejemplo, por el nombre de la tabla o sus columnas.

Al utilizar un informe por grupo de unidades, se pueden evitar verificaciones adicionales desactivando la opción Omitir filas vacías en los ajustes de la plantilla del informe. En este caso, las tablas se mostrarán incluso si no contienen datos y tendrán filas vacías.

Ekaterina Grib,Customer Service Engineer

Introducción al SDK: FAQ
  • technical_consulting

En este artículo se recopilan respuestas a las preguntas más frecuentes sobre el Remote API.

También pueden ser útiles:

  • Artículo Introducción al SDK: solicitudes básicas.
  • Artículo Introducción al SDK: creación de cuentas y unidades.
  • Artículo Introducción al SDK: ejecución de informes.
  • Portal para desarrolladores (en inglés) con documentación y descripción detallada de cada solicitud.
  • Ejemplos de códigos (en inglés) para trabajar con informes.
  • Ejemplos de soluciones listas utilizando el SDK en la sección Marketplace.
  • Serie de webinars Wialon API and SDK: how-to videos (en inglés).
  • Colección de ejemplos (en inglés) en la aplicación Postman para probar solicitudes API.
  • Sección del foro Custom SDK development.

¿Existen limitaciones en el uso del API?

Las limitaciones globales están descritas en la documentación. Generalmente, alcanzar estas limitaciones indica que la aplicación desarrollada no está optimizada para trabajar con el API. Por ejemplo, realiza múltiples solicitudes de autorización en lugar de mantener una sesión activa.

También existen limitaciones en algunas solicitudes, mencionadas en la descripción de la solicitud en la documentación. Por ejemplo, solo se puede ejecutar un informe a la vez en una sesión. Si en la sesión hay resultados de un informe anterior, deben eliminarse con la solicitud report/cleanup_result antes de ejecutar el siguiente informe. Además, la solicitud para ejecutar informes no puede realizarse simultáneamente con algunas otras solicitudes.

¿Es posible organizar la transmisión de datos en tiempo real desde Wialon mediante el API?

No. Las solicitudes API funcionan bajo el principio de "solicitud-respuesta". Es decir, los datos en el lado receptor no se actualizarán sin enviar una solicitud.

Si es necesario recibir datos del equipo a medida que llegan nuevos mensajes, se pueden utilizar repetidores.

¿Cómo crear un localizador mediante el API?

Consideremos un ejemplo: es necesario crear un localizador con tiempo de vida ilimitado, que muestre unidades con ID del sistema 11111111 y 22222222, así como geocercas del recurso con ID del sistema 12345678, pero que no muestre los recorridos de las unidades.

Para ello, se debe usar la solicitud token/update:

https://hst-api.wialon.com/wialon/ajax.html?svc=token/update¶ms=
{"callMode":"create","app":"locator","at":0,"dur":0,"fl":256,"p":"{\"note\":\"Bus\",\"zones\":1,\"tracks\":0}","items":[11111111,22222222,12345678]}&sid=SESSION_IDENTIFIER
Parámetro y su valorDescripción
"callMode":"create"Se selecciona la acción de creación (también están disponibles edición y eliminación).
"app":"locator"El valor locator es necesario para mostrarlo en la lista de enlaces en la interfaz web.
"at":0El tiempo de activación del token en UNIX-time es 0, es decir, el localizador comenzará a funcionar inmediatamente después de su creación.
"dur":0El tiempo de vida del token después de la activación es 0, es decir, su tiempo de vida será infinito.
"fl":256Este valor de los flags de acceso permitirá solo rastrear unidades en línea.
"p":"{\"note\":\"Bus\",\"zones\":1,\"tracks\":0}"La palabra Bus se usará como una nota, lo que permitirá distinguir el localizador de otros en la lista general. El localizador mostrará geocercas, pero no mostrará los recorridos de las unidades.
"items":[11111111,22222222,12345678]El localizador mostrará unidades con ID del sistema 11111111 y 22222222, así como geocercas del recurso con ID del sistema 12345678.

En la respuesta a la solicitud estará presente el parámetro h, que contiene el valor del token. Para obtener el enlace deseado, es necesario insertar el valor del token en el enlace: 
https://hosting.wialon.com/locator/index.html?t=TOKEN_VALUE

¿Cómo obtener un token con acceso máximo y sin límite de tiempo de vida?

Si la creación del token se realiza a través del formulario extendido, se deben usar los parámetros access_type=-1 y duration=0. Por ejemplo:

https://hosting.wialon.com/login.html?client_id=APP_NAME&access_type=256&activation_time=0&duration=0&lang=en&flags=0&user=USER_NAME

Si la creación del token se realiza mediante la solicitud token/update, se deben usar los parámetros fl=-1 y dur=0. Por ejemplo:

https://hst-api.wialon.com/wialon/ajax.html?svc=token/update¶ms=
{"callMode":"create","app":"Wialon Hosting","at":0,"dur":0,"fl":-1,"p":"{}"}&sid=SESSION_IDENTIFIER

El token se elimina automáticamente si no se utiliza durante 100 días, incluso si su tiempo de vida no está limitado (el parámetro duration o dur es 0).

¿Por qué al usar un token sin límite de tiempo puede devolver un error con el código 1?

El error con el código 1 indica que la sesión actual no es válida. El tiempo de vida del token no está directamente relacionado con la sesión.

Para solucionar la situación, es necesario realizar nuevamente la autorización. En la respuesta al inicio de sesión con el token, se incluirá el parámetro eid, cuyo valor es el identificador único de la sesión. Luego se utilizará en casi todas las solicitudes API.

Si en el transcurso de 5 minutos no se realiza ninguna solicitud dentro de la sesión, esta se vuelve inactiva. Para mantener la sesión, puede enviar la solicitud avl_evts cada 5 minutos.

¿Cómo corregir el error con el código 4?

El error con el código 4 corresponde a una entrada incorrecta, lo que puede significar:

  • Tipo de datos incorrecto (numérico, texto, etc.);
  • Nombres de parámetros incorrectos;
  • Separadores incorrectos (comas, comillas, espacios, paréntesis, etc.);
  • Falta de codificación para la transmisión en la URL.

Consideremos un ejemplo de solicitud con todos los errores mencionados:

https://hst-api.wialon.com/wialon/ajax.html?svc=report/export_result¶ms={"format":"2";"compres":0;"outputFileName":"List of trips"}&sid=SESSION_IDENTIFIER

En este ejemplo se cometieron los siguientes errores:

  • El parámetro format debe contener un número, pero como su valor está entre comillas, se interpreta como texto;
  • En lugar del parámetro con el nombre compress se utilizó el parámetro con el nombre compres ;
  • Para separar los parámetros se utilizó un punto y coma en lugar de una coma ;
  • El carácter de espacio no fue codificado para la transmisión en la URL.

Para verificar la codificación en la URL, se pueden usar herramientas en línea de acceso público.

La solicitud correcta se verá de la siguiente manera:

https://hst-api.wialon.com/wialon/ajax.html?svc=report/export_result¶ms={"format":2,"compress":0,"outputFileName":"List%20of%20trips"}&sid=SESSION_IDENTIFIER

¿Por qué al usar IDs únicos de unidades se produce un error con el código 7?

En las solicitudes API no se utilizan los IDs únicos de las unidades de la pestaña Básicas, sino los IDs del sistema internos de los elementos. Por defecto, no se muestran en las interfaces web.

Para obtener los IDs del sistema de los elementos, se puede usar la solicitud de búsqueda de elementos por criterios (core/search_items). En la respuesta a esta solicitud, el parámetro id contendrá el valor buscado.

Otros métodos para mostrar los IDs del sistema se describen en el artículo Introducción al SDK: solicitudes básicas.

¿Por qué el acceso a un elemento está restringido, aunque el usuario tiene todos los derechos

Probablemente, el problema se debe a la falta de derechos en el token utilizado.

Para verificar los derechos del token, realice el inicio de sesión con él token:

https://hst-api.wialon.com/wialon/ajax.html?svc=token/login¶ms={"token":"TOKEN_VALUE"}

En la respuesta se incluirá el parámetro fl, que muestra los derechos actuales del token. Para cambiarlos, edite el token actual o cree uno nuevo.

Para otorgar diferentes derechos, los flags deben sumarse entre sí.

Por ejemplo, si es necesario otorgar el derecho de rastreo en línea ("fl":256) y acceso de ver la mayor parte de la información ("fl":512), se debe usar el valor "fl":768, ya que 256 + 512 = 768.

¿Cómo obtener las últimas coordenadas de las unidades?

Para obtener las últimas coordenadas de varias unidades, se puede usar la solicitud de búsqueda de elementos por criterios (core/search_items). Es necesario especificar los flags de acceso, según los cuales en la respuesta se mostrarán los nombres de las unidades ("flag":1) y la información sobre la última ubicación de las unidades ("flag":1024). Los flags se pueden sumar entre sí, por lo que en la solicitud se usará el valor 1 + 1024 = 1025.

https://hst-api.wialon.com/wialon/ajax.html?svc=core/search_items¶ms={"spec":{"itemsType":"avl_unit","propName":"sys_name","propValueMask":"*","sortType":"sys_name"},"force":1,"flags":1025,"from":0,"to":0}&sid=SESSION_IDENTIFIER

¿Cómo obtener una lista de todas las unidades disponibles para el usuario?

Para mostrar todas las unidades disponibles para el usuario, se puede usar la solicitud de búsqueda de elementos por criterios (core/search_items) con el valor "propValueMask":"*".

https://hst-api.wialon.com/wialon/ajax.html?svc=core/search_items¶ms={"spec":{"itemsType":"avl_unit","propName":"sys_name","propValueMask":"*","sortType":"sys_name"},"force":1,"flags":1,"from":0,"to":0}&sid=SESSION_IDENTIFIER

En la respuesta se devolverá una lista de unidades disponibles para el usuario cuyo identificador de sesión se utilizó en la solicitud.

¿Cómo obtener los nombres de los grupos a los que pertenece una unidad específica?

Para obtener los nombres de los grupos a los que pertenece una unidad con el ID del sistema 11112222, se debe usar la solicitud de búsqueda de elementos por criterios (core/search_items) con los valores "itemsType":"avl_unit_group", "propName":"sys_units" y "propType":"list".

https://hst-api.wialon.com/wialon/ajax.html?svc=core/search_items¶ms={"spec":{"itemsType":"avl_unit_group","propName":"sys_units","propValueMask":11112222,"sortType":"sys_name","propType":"list"},"force":1,"flags":1,"from":0,"to":0}}&sid=SESSION_IDENTIFIER

¿Cómo obtener los nombres de las unidades de un grupo específico?

Para obtener los nombres de las unidades que pertenecen a un grupo con el nombre Group, se deben usar dos solicitudes de búsqueda de elementos por criterios (core/search_items): la primera buscará por el grupo de unidades (avl_unit_group) y la segunda por la unidad (avl_unit).

  1. Primero, se debe obtener una lista de los IDs del sistema de las unidades que pertenecen al grupo (su nombre debe especificarse en el parámetro propValueMask):

    https://hst-api.wialon.com/wialon/ajax.html?svc=core/search_items¶ms={"spec":{"itemsType":"avl_unit_group","propName":"sys_name","propValueMask":"Group","sortType":"sys_name"},"force":1,"flags":1,"from":0,"to":0}&sid=SESSION_IDENTIFIER
     Respuesta
    {
    	"searchSpec":{
    		"itemsType":"avl_unit_group",
    		"propName":"sys_name",
    		"propValueMask":"Group",
    		"sortType":"sys_name",
    		"propType":"",
    		"or_logic":"0"
    	},
    	"dataFlags":1,
    	"totalItemsCount":1,
    	"indexFrom":0,
    	"indexTo":0,
    	"items":[
    		{
    			"nm":"Group",
    			"cls":5,
    			"id":10000000,
    			"mu":0,
    			"u":[
    				20000001,
    				20000002,
    				20000003
    			],
    			"uacl":-1
    		}
    	]
    }
    
  2. En la respuesta a la solicitud anterior, se debe encontrar el parámetro u con los IDs del sistema de las unidades. Estos deben insertarse en el parámetro propValueMask para la siguiente solicitud de búsqueda:

    https://hst-api.wialon.com/wialon/ajax.html?svc=core/search_items¶ms={"spec":{"itemsType":"avl_unit","propName":"sys_id","propValueMask":"20000001,20000002,20000003","sortType":"sys_name"},"force":1,"flags":1,"from":0,"to":0}&sid=SESSION_IDENTIFIER
     Respuesta
    {
    	searchSpec:{
    		itemsType:"avl_unit",
    		propName:"sys_id",
    		propValueMask:"20000001,20000002,20000003",
    		sortType:"sys_name",
    		propType:"",
    		or_logic:"0"
    	},
    	dataFlags:1,
    	totalItemsCount:3,
    	indexFrom:0,
    	indexTo:0,
    	items:[
    		{
    			nm:"Unit_1",
    			cls:2,
    			id:20000001,
    			mu:0,
    			uacl:-1
    		},
    		{
    			nm:"Unit_2",
    			cls:2,
    			id:20000002,
    			mu:0,
    			uacl:-1
    		},
    		{
    			nm:"Unit_3",
    			cls:2,
    			id:20000003,
    			mu:0,
    			uacl:-1
    		}
    	]
    }
    

    Los nombres de las unidades se mostrarán en los parámetros nm.

¿Por qué difieren los resultados del informe en la interfaz y en la respuesta a la solicitud API?

Al ejecutar informes mediante solicitudes API, es importante no olvidar configurar la zona horaria para la sesión actual. Para ello, inmediatamente después de la autorización, se deben aplicar una vez las configuraciones de localización del usuario.

Al trabajar con informes mediante API, es necesario tener en cuenta las características de obtención de resultados por el índice de la tabla.

Ekaterina Grib,Customer Service Engineer

10
  • 10
  • 25
  • 30
Gracias por su opinión.
Informar de un error
Texto con el error Comentario
Máximo 500 caracteres